package bean;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;

import javax.faces.context.FacesContext;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.bean.RequestScoped;

import javax.servlet.http.HttpSession;
import javax.servlet.ServletContext;

import dao.DAOBusca;
import dao.PesrsitDAO;

import padroes.singleton.Singleton;
import pojo.Aluno;
import pojo.Curso;

@ManagedBean
@ViewScoped
public class AlunoBean {

	private Aluno aluno = new Aluno();

	private List<Aluno> alunos = new ArrayList<Aluno>();
	private DAOBusca<Aluno> daoAluno = new DAOBusca<Aluno>();
	private DAOBusca<Curso> daoCurso = new DAOBusca<Curso>();
	private Long idCurso;

	PesrsitDAO s = Singleton.getInstancia();

	public AlunoBean() {

	}

	public DAOBusca<Aluno> getDaoAluno() {
		return daoAluno;
	}

	public void setDaoAluno(DAOBusca<Aluno> daoAluno) {
		this.daoAluno = daoAluno;
	}


	public void setAlunos(List<Aluno> alunos) {
		this.alunos = alunos;
	}

	public List<Aluno> getAlunos() {
		alunos = daoAluno.busca(Aluno.class);
		return alunos;

	}

	public Aluno getAluno() {
		return aluno;
	}

	public void setAluno(Aluno aluno) {
		this.aluno = aluno;
	}

	public void atualizar() {
		alunos = daoAluno.busca(Aluno.class);
	}

	public void salvar() {
		HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
				.getExternalContext().getSession(false);
		List<Curso> bandas = daoCurso.busca(Curso.class);
		for (Curso c : bandas) {
			if (c.getId().equals(idCurso)) {
				aluno.setCurso(c);
			}
		}
		try {
			aluno.setTipo(0);
			s.salvar(aluno);
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		FacesContext ctx = FacesContext.getCurrentInstance();
		ctx.addMessage(null, new FacesMessage("Aluno  " + aluno.getNome()
				+ " Inserido com sucesso !"));

		aluno = new Aluno();

		atualizar();
	}

	public DAOBusca<Curso> getDaoCurso() {
		return daoCurso;
	}

	public void setDaoCurso(DAOBusca<Curso> daoCurso) {
		this.daoCurso = daoCurso;
	}

	/**
	 * @return the idCurso
	 */
	public Long getIdCurso() {
		return idCurso;
	}

	/**
	 * @param idCurso
	 *            the idCurso to set
	 */
	public void setIdCurso(Long idCurso) {
		this.idCurso = idCurso;
	}

}
